
//#ifdef H5
import COS from 'cos-js-sdk-v5';
//#endif
// #ifdef MP-WEIXIN || APP-PLUS
import COS from 'cos-wx-sdk-v5'; //引入Cos
// #endif

var dataToken = {
	"code":200,
	"message":"success",
	"data":{
		"expiredTime":1749803259,
		"expiration":"2025-06-13T08:27:39Z",
		"credentials":{
			"sessionToken":"J2VAZx3ffWbgnn4ICXjVWN3A5Qk07Ywa308234cf285888c75ec401f86f86dfddhDOAxVmr28R3_aeeZwMJ4SkHrhqCCe3jsCBHUdMaHPGIPYAkGDQvox2BsdjzXVGNPGPcp7iinIpoajY4jzQ6jyvwmLfiM7QAS6yJmm5ex1PkQNh9G5kQJF5lWgIsgS_ANm_Dps694puigzBkc7PyvnuTH6RlwVCcEekTLBwVjySvtlMxPaokkLhXGDbtnt7UKLm0qwu7LGUPG9s7qdqaIP7EWgXL3v7Y-nZ-Iubj6EPm6EyCKdgT5g914Wfhaj3HHmrpUJNmmPzLNFTqSWqW2yTYoONTS6gZgGpaN3us6nU7c_3LlF5fv1HCISs7j2NnHPXVlqLyGXSXHiGTfeT0SJCubRWnW_qgiogO8moei-Y",
			"tmpSecretId":"AKIDPfsWPWyYqs45Rggl7JOlh0Ow4-Rn6Ko90qPm3zxJRAdYTutTyxM9YDaGYXgDU5YA",
			"tmpSecretKey":"xWzNRgTXa6Lkriw5dfWKwOvQIUcCLyE5S+xltrdmHr0=",
			},
			"requestId":"e326f757-f8f8-4100-8437-3e739333950b",
			"startTime":1749796059,
			"bucket":"educate-live-1363854249",
			"region":"ap-chengdu",
	},
};
var client = null
// 上传临时密钥
export function getCommonToken (res) {
  console.log('getCommonToken',res)
  dataToken = res
  client = new COS({
  	// SecretId: data.data.credentials.tmpSecretId,
  	// SecretKey: data.data.credentials.tmpSecretKey,
  	// SecurityToken: data.data.credentials.sessionToken,
  	// StartTime: data.data.startTime, // 建议传入服务端时间，可避免客户端时间不准导致的签名错误
  	// ExpiredTime: data.data.expiredTime, // 临时密钥过期时间
  	// SimpleUploadMethod: 'putObject', // 强烈建议，高级上传、批量上传内部对小文件做简单上传时使用 putObject,sdk 版本至少需要v1.3.0
  	SimpleUploadMethod: 'putObject', // 强烈建议，高级上传、批量上传内部对小文件做简单上传时使用 putObject,sdk 版本至少需要v1.3.0
  	getAuthorization: async function (options, callback) {
  	  // const data = await fetchSts('xxxx'); // 需自行实现获取临时密钥逻辑
  	  callback({
  		TmpSecretId: res.data.credentials.tmpSecretId,
  		TmpSecretKey: res.data.credentials.tmpSecretKey,
  		SecurityToken: res.data.credentials.sessionToken,
  		// 建议返回服务器时间作为签名的开始时间，避免客户端本地时间偏差过大导致签名错误
  		StartTime: res.data.startTime, // 时间戳，单位秒，如：1580000000
  		ExpiredTime: res.data.expiredTime, // 时间戳，单位秒，如：1580000000
  		ScopeLimit: true, // 细粒度控制权限需要设为 true，会限制密钥只在相同请求时重复使用
  	  });
  	}
  });
}
// 封装一个Promise方法
export function uploadFile(cosObject, filePath,fileName) {
	return new Promise(async (resolve, reject) => {
		// 读取文件内容转换为base64Data
	 //    const fs = uni.getFileSystemManager();
	 //    fs.readFile({
		// 	filePath: filePath,
		// 	encoding: 'base64', // binary
		// 	success: (readRes) => {
		// 	  const base64Data = readRes.data;
		// 	},
		// })
	   console.log(filePath, fileName)
	   let clients = new COS({
	   		// SecretId: data.data.credentials.tmpSecretId,
	   		// SecretKey: data.data.credentials.tmpSecretKey,
	   		// SecurityToken: data.data.credentials.sessionToken,
	   		// StartTime: data.data.startTime, // 建议传入服务端时间，可避免客户端时间不准导致的签名错误
	   		// ExpiredTime: data.data.expiredTime, // 临时密钥过期时间
	   		// SimpleUploadMethod: 'putObject', // 强烈建议，高级上传、批量上传内部对小文件做简单上传时使用 putObject,sdk 版本至少需要v1.3.0
	   		SimpleUploadMethod: 'putObject', // 强烈建议，高级上传、批量上传内部对小文件做简单上传时使用 putObject,sdk 版本至少需要v1.3.0
	   		getAuthorization: async function (options, callback) {
	   		  // const data = await fetchSts('xxxx'); // 需自行实现获取临时密钥逻辑
	   		  callback({
	   			TmpSecretId: cosObject.data.credentials.tmpSecretId,
	   			TmpSecretKey: cosObject.data.credentials.tmpSecretKey,
	   			SecurityToken: cosObject.data.credentials.sessionToken,
	   			// 建议返回服务器时间作为签名的开始时间，避免客户端本地时间偏差过大导致签名错误
	   			StartTime: cosObject.data.startTime, // 时间戳，单位秒，如：1580000000
	   			ExpiredTime: cosObject.data.expiredTime, // 时间戳，单位秒，如：1580000000
	   			ScopeLimit: true, // 细粒度控制权限需要设为 true，会限制密钥只在相同请求时重复使用
	   		  });
	   		}
	   });
	   	// #ifdef APP-PLUS
	   	clients.postObject({
	   		Bucket: cosObject.data.bucket, // 腾讯云的Bucket
	   		Region: cosObject.data.region, // 地区
	   		Key: fileName, // 文件在Cos中的存储路径
	   		FilePath: filePath,
	   		SliceSize: 1024 * 1024 * 5, // 文件大于5mb自动使用分块上传
	   		Headers:{
	   			'x-cos-request-id': cosObject.data.requestId
	   		},
	   		onProgress: function(progressData) {
	   			// 这里可以查看上传进度
	   			 console.log(`上传进度 ${progressData.percent.toFixed(2)}%`);
	   		},
	   	}, (err, data) => {
	   		if (err) {
	   			 console.log(`错误`,err);
	   			reject(err);
	   		} else {
	   			// 拿到Cos返回的路径
	   			let path = data.Location
	   			console.log(data);
	   			resolve(path)
	   		}
	   	});
	   	return;
	   	// #endif
		// #ifdef MP-WEIXIN
		clients.uploadFile({
			Bucket: cosObject.data.bucket, // 腾讯云的Bucket
			Region: cosObject.data.region, // 地区
			Key: fileName, // 文件在Cos中的存储路径
			FilePath: filePath,
			SliceSize: 1024 * 1024 * 5, // 文件大于5mb自动使用分块上传
			Headers:{
				'x-cos-request-id': cosObject.data.requestId
			},
			onProgress: function(progressData) {
				// 这里可以查看上传进度
				 console.log(`上传进度 ${progressData.percent.toFixed(2)}%`);
			},
		}, (err, data) => {
			if (err) {
				 console.log(`错误`,err);
				reject(err);
			} else {
				// 拿到Cos返回的路径
				let path = data.Location
				console.log(data);
				resolve(path)
			}
		});
		return;
		// #endif
		
		// #ifdef H5
		
		// #endif
	})
}

// h5上传
export function uploadFile2(cosObject,filePath,fileName) {
	return new Promise(async (resolve, reject) => {
		let cos = new COS({
		// SecretId: data.data.credentials.tmpSecretId,
		// SecretKey: data.data.credentials.tmpSecretKey,
		// SecurityToken: data.data.credentials.sessionToken,
		// StartTime: data.data.startTime, // 建议传入服务端时间，可避免客户端时间不准导致的签名错误
		// ExpiredTime: data.data.expiredTime, // 临时密钥过期时间
		// SimpleUploadMethod: 'putObject', // 强烈建议，高级上传、批量上传内部对小文件做简单上传时使用 putObject,sdk 版本至少需要v1.3.0
		SimpleUploadMethod: 'putObject', // 强烈建议，高级上传、批量上传内部对小文件做简单上传时使用 putObject,sdk 版本至少需要v1.3.0
		getAuthorization: async function (options, callback) {
		  // const data = await fetchSts('xxxx'); // 需自行实现获取临时密钥逻辑
		  callback({
			TmpSecretId: cosObject.data.credentials.tmpSecretId,
			TmpSecretKey: cosObject.data.credentials.tmpSecretKey,
			SecurityToken: cosObject.data.credentials.sessionToken,
			// 建议返回服务器时间作为签名的开始时间，避免客户端本地时间偏差过大导致签名错误
			StartTime: cosObject.data.startTime, // 时间戳，单位秒，如：1580000000
			ExpiredTime: cosObject.data.expiredTime, // 时间戳，单位秒，如：1580000000
			ScopeLimit: true, // 细粒度控制权限需要设为 true，会限制密钥只在相同请求时重复使用
		  });
		}
	  });
	  cos.uploadFile({
	  	Bucket: cosObject.data.bucket, // 腾讯云的Bucket
	  	Region: cosObject.data.region, // 地区
	  	Key: fileName, // 文件在Cos中的存储路径
	  	Body: filePath, // Body
	  	SliceSize: 1024 * 1024 * 5, // 文件大于5mb自动使用分块上传
	  	Headers:{
	  		'x-cos-request-id': cosObject.data.requestId
	  	},
	  	onProgress: function(progressData) {
	  		// 这里可以查看上传进度
	  		 console.log(`上传进度 ${progressData.percent.toFixed(2)}%`);
	  	},
	  }, (err, data) => {
	  	if (err) {
	  		 console.log(`错误`,err);
	  		reject(err);
	  	} else {
	  		// 拿到Cos返回的路径
	  		let path = data.Location
	  		console.log(data);
	  		resolve(path)
	  	}
	  });
	  return;
	})
}